home *** CD-ROM | disk | FTP | other *** search
/ Archive Magazine CD 1995 / Archive Magazine CD 1995.iso / discs / prog_disc / volume_7 / issue_07 / elec_cad / Impr next >
Encoding:
Text File  |  1994-02-24  |  24.6 KB  |  199 lines

  1. {
  2. define style "BaseStyle";
  3.  font Trinity.Medium;
  4.  fontsize 13pt;
  5.  spaceabove 0pt;
  6.  spacebelow 4pt;
  7.  leftmargin 0pt;
  8.  rightmargin -0pt;
  9.  returnmargin 0pt;
  10.  condframethrow 0pt;
  11.  rulewidth 0pt;
  12.  ruleoffset 0pt;
  13.  fontaspect 100%;
  14.  fontcolour rgb=(0,0,0);
  15.  linecolour rgb=(0,0,0);
  16.  rulecolour rgb=(0,0,0);
  17.  justify full;
  18.  underline 0;
  19.  strikeout off;
  20.  script off;
  21.  hyphenate on;
  22.  leader "";
  23.  locktolinespace off;
  24.  ruleaboveoffset 0pt;
  25.  rulecontrol 0;
  26.  vertrulewidth 0pt;
  27.  ruleleftmargin 0pt;
  28.  rulerightmargin 0pt;
  29.  tabs 12pt,45pt,71pt,99pt,129pt,432pt,504pt,576pt,648pt}{
  30. define style "Main Heading";
  31.  font Homerton.Bold;
  32.  fontsize 16pt;
  33.  leftmargin 40pt;
  34.  returnmargin 0pt;
  35.  contents 1;
  36.  shortcut 385}{
  37. define style "Heading";
  38.  font Homerton.Bold;
  39.  spacebelow 0pt;
  40.  justify left;
  41.  contents 2;
  42.  shortcut 386;
  43.  tabs 12pt}{
  44. define style "Footer";
  45.  font Homerton.Bold;
  46.  fontsize 12pt;
  47.  spaceabove 0pt;
  48.  spacebelow 0pt;
  49.  leftmargin 0pt;
  50.  returnmargin 0pt;
  51.  tabs right 535.2pt}{
  52. define style "Box heading";
  53.  font Homerton.Bold;
  54.  fontsize 24pt;
  55.  spaceabove 6pt;
  56.  spacebelow 0pt;
  57.  justify centre;
  58.  shortcut 435}{
  59. define style "ParaIndent";
  60.  returnmargin 16.5pt;
  61.  locktolinespace off;
  62.  shortcut 393}{
  63. define style "NoSpace";
  64.  spacebelow 0pt;
  65.  locktolinespace off;
  66.  shortcut 437}{
  67. define style "BoldItalic";
  68.  font Trinity.Bold.Italic;
  69.  locktolinespace off;
  70.  shortcut 436}{
  71. define style "Top";
  72.  spaceabove 0pt;
  73.  locktolinespace off;
  74.  shortcut 440}{
  75. define style "No Hyphens";
  76.  hyphenate off;
  77.  locktolinespace off;
  78.  shortcut 433}{
  79. define style "Bold";
  80.  font Trinity.Bold;
  81.  locktolinespace off;
  82.  shortcut 388}{
  83. define style "Italic";
  84.  font Trinity.Medium.Italic;
  85.  locktolinespace off;
  86.  shortcut 387}{
  87. define style "ArcSymbol";
  88.  font Homerton.Medium.Oblique;
  89.  fontsize 13pt;
  90.  fontcolour hsv=(0,0,1);
  91.  backcolour hsv=(0,0,0);
  92.  locktolinespace off}{
  93. define style "indent";
  94.  spacebelow 3pt;
  95.  leftmargin 17pt;
  96.  returnmargin 0pt;
  97.  locktolinespace off;
  98.  shortcut 458;
  99.  tabs 18pt}{
  100. define style "program";
  101.  font Corpus.Medium;
  102.  fontsize 12pt;
  103.  spacebelow 0pt;
  104.  justify left;
  105.  locktolinespace off;
  106.  shortcut 438}{
  107. define style "progtext";
  108.  font Corpus.Medium;
  109.  fontsize 12pt;
  110.  spacebelow 0pt;
  111.  leftmargin 42.5pt;
  112.  returnmargin 11.3pt;
  113.  justify left;
  114.  locktolinespace off;
  115.  shortcut 439;
  116.  tabs 43pt}{
  117. define style "Centre Head";
  118.  font Homerton.Bold;
  119.  fontsize 15pt;
  120.  spaceabove 4pt;
  121.  spacebelow 2pt;
  122.  justify centre;
  123.  locktolinespace off;
  124.  shortcut 506}{
  125. define style "Progbit";
  126.  font Corpus.Medium;
  127.  locktolinespace off;
  128.  shortcut 441}{
  129. define style "Less space";
  130.  spacebelow 1.5pt;
  131.  locktolinespace off;
  132.  shortcut 434}{"Box heading" on}Electronic CAD (4) {\153} {"Box heading" off}{"Box heading" on}Vector for PCB Design{"Box heading" off}
  133. {"Main Heading" on}Richard Torrens
  134. {"Main Heading" off}I have been using DrawPlus for a long time now and it was so good that I never upgraded to Vector. When I was considering an upgrade from LinTrack, I purchased OakPCB because I had heard that it looked promising. As you read in last month{\145}s review, it does indeed look interesting and it is fine for small circuits. However, I soon found that there were severe limitations and I spent about 8 months trying to give Oak help to overcome them. In the meanwhile, I have upgraded to Vector and I regret not having done so before. Vector has some special features which make it very good for PCB work. The latest version is 1.10 and some of the features mentioned here may not be present on earlier versions.
  135. If, as a result of this article, you buy Vector ({\163}85 +VAT), please mention my name to 4Mation, so we can all assess the market for PCB CAD. {"Italic" on}(The same applies if you buy it through Archive at {\163}92. Ed.){"Italic" off} If there is sufficient demand, extra modifications are possible. In the meanwhile, as 4Mation know nothing about PCB design, I have offered them free technical support via Archive, so if you have problems please contact me.
  136. Vector was written, as was DrawPlus, by Jonathan Marten who is an engineer in the aerospace industry. He started using Acorn{\145}s original Draw and found it lacking. So Jonathan started rewriting it. Eventually he was satisfied and released the new program into PD as Draw1{\189}. This was gradually upgraded and became DrawPlus. Then Jonathan teamed up with 4Mation, who put more ideas and improvements into the melting pot.
  137. The important points are that the program was written for the programmer{\145}s own use. It is a {\144}live{\145} program which still grows. It also seems that JM is a very clear thinker as the program, Vector, is a very major work which is very well thought out, useful for doing real things and copes very well with a lot of tasks which JM never even considered. I suspect that JM is never satisfied with his own work and, however good it is, always seeks something better.
  138. Jonathan has also written a utility to convert my old LinTrack files to Vector and the resulting Vector display looks really good and prints out excellently (within the limitations of the original LinTrack file). I had initially thought that I would still use LinTrack and simply use Vector for printing out. I{\145}m not so sure now {\153} it looks as if I{\145}ll do the design in Vector also.
  139. {"Heading" on}Special features
  140. {"Heading" off}Vector{\145}s special features are its layers, its rulers and position readout, its {\144}Overlay{\145} facility and its library. It also has facilities for merging and splitting objects. These all combine to make the package very versatile and powerful. The rest of this article is not intended as a review of Vector, more as instructions on how to use these features, with special reference to PCB design, since these features are not covered very well in the manual. However, they are extremely powerful and the description should give you some ideas for the more general use of these facilities.
  141. {"Bold" on}Layers {"Bold" off}{\153} A drawfile already has {\144}layers{\145} in that each object is drawn to screen as it is read from the file so that they are placed in a pile with the earliest object at the bottom of the pile and later ones on top. You can move objects to the top or to the bottom of the pile in Draw. You can, in Vector, also step the object one back or one forward in the pile. This structure has nothing to do with the {\144}Layers{\145} of Vector and it is independent of Vector{\145}s layers.
  142. The layer structure which Vector uses gives each Draw object a separate tag. There are 32 tags available and all items with the same tag number are considered to be on one {\144}layer{\145} (the word layer is something of a misnomer, but I can{\145}t think of a better word for the effect). The benefit of this layer tag is clear as soon as you realise that, in Vector, you can chose whether or not to display each layer and whether or not you want any layer selectable. The concept is explained well in the manual.
  143. For a single-sided PCB, you can, for instance, keep all copper tracks on one layer, copper pads on a second, drilling information on a third and silk screen (component information) on a fourth. You will probably put down pads first, then tracks. So make only the track layer selectable, select all items and move them to the back. Immediately, the pads are drawn correctly on top of the tracks and all the pad centre holes are immediately visible.
  144. Grouping works as in Draw but it also interacts with the layer structure. When you group a selection of objects, a separate {\144}group{\145} object is formed and this {\144}indexes{\145} the individual objects. It is rather similar to forming a new directory on your disc and moving a group of files into the new directory. The files themselves don{\145}t change.
  145. In a similar way, when you group a selection of objects, the layers of those individual objects don{\145}t alter and the layer structure is retained {\144}inside{\145} the new group. However, the group is created on the layer which you were working on when you created it. The group will be displayed with this layer, not with any of the layers of the objects within the group, so the layer information appears to be lost. However, when you ungroup the object, the individual objects within the group immediately fall back to their original layers. You can, of course, group groups together and the same thing applies. This is very similar in concept to the ADFS file structure.
  146. This structure can make layers very confusing if you don{\145}t understand it. For example, if you create a new drawing (which will only have a single layer) and drop a grouped library item into it, the library item may disappear completely if it was created on a layer which does not exist in the new drawing. However, the grouped object will be there {\153} add layers so the object{\145}s layer exists in the drawing and the object will magically reappear.
  147. {"Bold" on}Ruler{"Bold" off} {\153} Draw lacks any position information except for the grid. Vector has full position readout available on two rulers (which are scalable) which makes accurate technical drawing very easy. The grid is locked to the rulers and there is an option of setting the drawing origins anywhere on the page. You can also digitally read the current cursor position at any time. This is all exactly as requited for technical drawing.
  148. {"Bold" on}Overlay {"Bold" off}{\153} Filling an open path has always seemed a little meaningless to me. In Vector you can chose an {\144}overlay{\145} instead of a fill. This is specially useful in PCB work as, if you overlay a coloured path with white, make the end caps round and then edit the path to zero length, the result is a {\144}donut{\145} of exactly the type we use for pads in PCB work for pads. The result is exactly the same as a standard circle with a defined line width, but is a lot easier to calculate (try getting a circle of 0.1{\148} external diameter the normal way) and takes up a lot less file space. Vector 1.10 is probably worth buying for this alone! The overlay facility is new to Vector{\160}1.10.
  149. {"Bold" on}Library {"Bold" off}{\153} Vector has a comprehensive library facility. Any Draw object, whether a single object or a group of objects, may be saved to a library. Libraries may be saved and loaded as required. A Library file has a special filetype, so you can start Vector by clicking on a Library file, and you can load a new library by clicking on it.
  150. The library has a separate viewer window, so you can see the selected library item before you use it.
  151. Once you have designed a standard resistor, capacitor, etc, save it to the library! You cannot really do PCB work without a good library facility. In fact, the standard of items in your library very much determines your overall style. I will end up with several PCB libraries {\153} one for single-sided boards (with 0.09" diameter pads on copper layer only) and a second for double-sided PTH boards (with 0.05" pads on both sides).
  152. There is, in the library menu, an option... {\144}Reset layers{\145}. If this is ticked, the group and every object within it is has its layer reset to the one you are working on when you load the library item. Be careful with this because, if it is not as you expect, confusion results.
  153. If you have the {\144}Reset layers{\145} option unticked and the library item is on a layer other than zero, then another effect can occur with a new diagram. The new diagram will only have layer zero. If you pull in the non-zero layer library item, it disappears. Now, if you add layers, the library item will reappear when you add the layer it is on.
  154. Beware also of changing the layer of a grouped object. This not only moves the group but also resets every object within the group to be on the new layer.
  155. Jonathan Marten says that layers are one of the least used features in the package and it was difficult for him to decide how layers should work. I can well believe this but it does mean that, if you have any better ideas, we may be able to get him to alter the program, so let me know what you think.
  156. {"Heading" on}Merge and split
  157. {"Heading" off}Draw contains the concept of {\144}Move{\145} within a path but it can be very difficult to implement moves in a sensible way. I require a move when I am trying to draw an area of copper with one oo more odd shaped holes in it. With DrawPlus, I found this difficult and with OakPCB it was nearly impossible as OakPCB doesn{\145}t even include a Move facility in a path.
  158. With Vector it is easy: simply draw in the copper area as one filled object and each hole as a separate unfilled object. When the area and holes are exactly drawn to your satisfaction, select them all and apply {\144}Merge paths{\145}. All the objects become one and (if the winding rule is correct, which it is by default) the hole outlines appear correctly as holes in the copper area. Later, if you wish to move any holes, pick the object up and {\144}Split to sub-paths{\145} to restore the copper area and the hole outlines. Very simple!
  159. Also, in laying down tracks, some are inevitably circuitous (no pun intended) and I find that, when editing, I keep selecting these. If so, I can select one and {\144}Split to lines{\145}. The object splits up to the appropriate number of paths with no nodes. This can be very helpful.
  160. {"Heading" on}Grid
  161. {"Heading" off}PCBs are normally laid out on 0.1" grid, as this is the spacing between pins of an IC, so it has become the standard grid for PCBs. Vector, of course, has a 1" grid available. The basic grid can be subdivided into up to 100 subdivisions so, for PCB work, you will use 10 divisions or, more likely, 20 to give a basic 50 thou grid. For finer work, you can go to a grid of 40 or even 80 or 100 divisions. If so chosen, the objects, as they are created, will snap to this grid.
  162. There is a slight problem with Library items. When a library object is pasted into the diagram, how should it fit back onto the grid? Vector, by default, will try to fit the edges of the bounding box to the grid, but you can choose to lock the centre of the object to the grid. However, for PCB work, what you really need is that the centres of the pads be on your grid. Vector is not specific to PCBs so it has no concept of a pad. It is therefore up to you to make sure that your library objects are {\144}symmetrical{\145} so that the pads end up where you want them on the grid you chose. Many of my library objects include an invisible path at the back, for just this reason.
  163. {"Heading" on}PCB design
  164. {"Heading" off}The arrangement of layers that I use is:
  165. 0 Copper side tracks lines, round end caps, no fill/overlay.
  166. 1 Copper side areas filled paths
  167. 2 Copper side pads zero length lines, round end caps, overlaid
  168. 3 Top side tracks as layer 1
  169. 4 Top side areas as layer 2
  170. 5 Top side pads as layer 3
  171. 6 Drilling marks for hole sizes, board outline, etc, comments to photographers/board producers
  172. 7 Silk screen
  173. 8 Outlines: board outlines and cropping which may require printing out with top and bottom side artwork
  174. 9 Grouped objects: Library items which may contain pads, silk screen, etc
  175. 10 Work in progress
  176. The reason for keeping topside and copper side information separate is obvious. However, why three layers for copper side? Firstly, I keep pads on their own layer so that they may be depth-sorted to lie on top of tracks so that the centre holes are correctly printed as explained above.
  177. The reason for separating tracks from areas is to do with printing. To get a good, black image, the printed object must be black {\153} yet I need colours on screen to see what I am doing. I cannot pick tracks and areas up together as tracks are thick, unfilled lines which only require a line colour change whilst areas require a line and a fill colour to be specified. If I select a fill colour for tracks, I end up with filled lines which is not what I require. Separating like this, means that I can change the line colour only on layer 0 and line and fill colour on layer 1.
  178. Grouped objects are library items, containing all relevant draw objects, each with their correct layer information. This makes editing the layout relatively simple. All the grouping is done on layer 9. When the board is completed to my satisfaction, I lock the source file, so I won{\145}t save over it. Then I simply make all layers unselectable except layer 9. I then {\144}Select all{\145} to pick up everything on layer 9 and {\144}ungroup{\145}. All individual draw objects fall back to their correct layers. I then do a {\144}comb sort{\145} selecting layer 1 only, move it to the top, layer 2 move to top and so on through to layer 9. Then I change colours as just discussed and do my printout.
  179. Thus, a typical library item (e.g. a resistor) will have two copperside pads (layer 3), two topside pads (layer 6), two pads on layer 7 (to indicate the hole size) and an outline (layer 8). These objects will all be grouped together on layer 9. If the resistor has a value or number attached to it, this is added to layer 8 after the library object is placed. The library object and value are then picked up and grouped again on layer 9. If a value change is later required, I can go to layer 9 (grouped), make only it and layer 7 (silk screen) selectable, pick up the object, ungroup it, alter the value then regroup it. Before printing, two {\144}ungroup{\145} operations will disintegrate the drawing, ready for colour changes. If the library is PTH, then the same pads will do for top and bottom, so only one pad layer is needed.
  180. With the layer structure, I can also do my editing on a new layer, so I can see the Before and After effect. First create three new layers (say 10, 11 and 12). Next pick up everything you want to edit, move to the new layer 11 and group them. Make layer 11 invisible and unselectable {\153} the group disappears. Move to layer 10, make everything except layer 11 (the {\144}before{\145} group) selectable. Select all and group it to protect it from change. Now move back to layer 11, select all and copy it. Move the copy back to exactly overlay the original and ungroup it. Make layer 11 (the {\144}before{\145} group) invisible.
  181. You now have a file with only certain objects editable: alter this as you want. Then make the {\144}unchanged{\145} group{\145}s layer unselectable, move to layer 12, select all (which will be all the edited objects) and group then.
  182. You can now switch between {\144}before{\145} and {\144}after{\145} to check your change by making layer 11 the current layer and invisible. Tick the icon {\144}Automatic sel/vis switch{\145} so that when you step between layer 11 and 12, you can see the changes.
  183. The use of layers and grouping in this way make for some exciting possibilities as well as some potential for confusion. How about a modification file, where a complete modification history is present and can be viewed by stepping through the layers? Or if you want to alter your diagram, you can group the parts you wish to alter on a spare layer and turn this layer off; the grouped bits vanish from view. Now group the rest of the diagram on another spare layer but don{\145}t turn them off, just make it unselectable. You can now make the changes and group them on a new layer. By turning the appropriate layers on and off you can see before and after views.
  184. {"Heading" on}Some examples
  185. {"Heading" off}One of the components I use is a relay. Its footprint is shown in the diagram. This has two rectangular slots in the top left corner which are 2.6mm {\215} 1.1mm. The other pins of the relay require that it be drawn on a 1/20mm grid {\153} this was no problem with Vector. Now this relay is a single pole {\144}make{\145} relay {\153} the top left contact is to be left unconnected. The second item is the copper track that I have in the library file for the relay, scaled {\215}2 so you can see it. This consists of two identical objects. Each object is a pair of rectangles with a move between them, so the inside is not filled, to represent the required slot. The second item shows the effect of applying this to the two objects {\153} I have also applied {\144}no fill{\145} so you can see them. In the third item, I have drawn a filled rectangle over the two original items to represent the copper area to which I am connecting. I have {\144}split to subpaths{\145} the two objects, and deleted the outer box of the right hand one. Then I selected all four items and applied another {\144}merge paths{\145}. This makes them all into one item with moves where appropriate, so on the right I get a rectangular slot where the board has to be milled out and on the left I get a rectangular copper area with a rectangular clear area around it. When the board is milled out at the copper rectangle the relay contact will not connect, which is exactly what I require.
  186. This is very simple in Vector and, so far as I know, is either impossible or very difficult with other dedicated PCB design packages. In LinTrack, I would have had to use individual sections of line to do the job {\153} easy if not very elegant. On OakPCB it was impossible to do accurately {\153} Oak doesn{\145}t allow for moves at all. CADMust has no facilities for non-round holes, I{\145}m told, and although Silicon Vision won{\145}t let me see an up-to-date copy of ArcPCB, the early version I do have cannot cope either.{justify centre}
  187. {justify}The library file has all the elements of the relay, except for the copper rectangles, grouped on layer 9. This group is then grouped again with the copper rectangles onto layer 9. Thus, when I have drawn the copper area into which it will fit, I can ungroup the relay, dropping the copper areas back onto layer 1, do the splitting and merging and get the required result. If I later decide to move the relay I can again split, delete the relay and replace it from the library with a new relay in the right place. Ungrouping will drop the copper areas in the right place again with no fuss.
  188. Paul{\145}s not sure how it will come out in the printing, but the following diagram shows a PCB layout I have done with Vector.
  189. {"Heading" on}Editing
  190. {"Heading" off}It can be very difficult to get a PCB layout correct first time unless it is simple. It is probably easier to get a digital circuit right as interconnections between chips are well defined and spacing between chips can be relatively easily standardised, but with analogue circuits (which use a lot of discrete components) the first version of the circuit is not often correct and, during development, a lot of editing is necessary. Vector, it must be said, is not at its best during editing. However, editing is a difficult area for most PCB layout packages and, in comparison with other packages, Vector actually does very well indeed. More about editing next month.
  191. {"Heading" on}Summary
  192. {"Heading" off}Vector gives me, in a single package, a circuit design package, a PCB layout package, a technical drawing package and a general drawing package. I would love to find a dedicated PCB program which does better but I can{\145}t, although I{\145}m still looking. In the meanwhile, I enjoy using Vector. Using Vector for everything also simplifies my learning curve. However, be warned: Vector has no design rules to help you with PCB work: Vector will only do what you tell it. It won{\145}t fight you but it is so versatile that you may easily confuse yourself. It can do just about anything you want {\153} so it can be very easy to make it do something you don{\145}t want, especially with the use of layers and grouping, so organise your thoughts.
  193. I have several future articles planned: next month I shall look at LinTrack and the LinTrack to Vector converter Jonathan Marten has written.
  194. How about PipeDream for parts listing, stock control, purchasing, letter answering, DTP and for general business use? I also want to get into SBase and how to use it for stock control. Circuit Analysis programs are on my list (a couple were reviewed last month) and I may also cover ArcFax and Prophet {\153} incidentally Quentin Paine of Apricote Studios is working on a major update of this which I await with interest.
  195. {"Heading" on}RiscCAD
  196. {"Heading" off}Then there{\145}s RiscCAD from Davyn Software. The programmer, David Buck, wants to write a PCB design package and I am in close contact with him. Now is your chance to get in on the ground floor and tell the programmer exactly what you do or do not want in a program. All suggestions to me please. We could get the program we all want if we act quickly.
  197. {"Heading" on}Fastrax
  198. {"Heading" off}There is also Fastrax from Techsoft. A pre-release copy of this arrived on my desk by this afternoon{\145}s post. It looks very promising indeed. There is, as yet, no manual but the program seems pretty much self-explanatory. I have had a long chat with the programmer and {\153} would you believe it {\153} he used to work for Linear Graphics so, in effect, the program is taking over the legacy of LinTrack. Maybe that{\145}s why I find it so interesting {\153} more on this is sure to follow.{\160}{"ArcSymbol" on}{kern 0 -150}{\160}{kern 0 40}A {"ArcSymbol" off}
  199.